<html>
<script>

    function inherit(p) {
        if (p === null) { throw TypeError() };
        if (Object.create) { return Object.create(p) };
        var t = typeof p;
        if (t !== "object" && t !== "function") { throw TypeError() }
        function f() { };
        f.prototype = p;
        return new f();
    }

    // function range(from, to) {
    //     // 使用inherit()函数来创建对象
    //     var r = inherit(range.methods);

    //     r.from = from;
    //     r.to = to;
    //     // 返回这个新创建的对象  
    //     return r;
    // }

    // // 原型对象定义方法，这些方法为每个范围对象所继承
    // range.methods = {
    //     // 如果x在范围之内，则返回true，否者返回false
    //     // 这个方法可以是比较数字范围，也可以比较字符串和日期范围
    //     includes: function (x) {
    //         return this.from <= x && x <= this.to;
    //     },
    //     foreach: function (f) {
    //         for (var x = Math.ceil(this.from); x <= this.to; x++) { f(x); }
    //     },
    //     // 返回表示这个范围的字符串
    //     toString: function () { return "(" + this.from + "..." + this.to + ")"; }
    // }

    // 这里四使用 "范围对象" 的一些例子
    // var r = range(1, 3);
    // r.includes(2);
    // r.foreach(console.log);
    // console.log(r);

    // 9-2: 使用构造函数来定义 “范围类”
    function Range(from, to) {
        this.from = from;
        this.to = to;
    }




    // 所有的“范围对象”都继承自这个对象
    // 注意，属性的名字必须是“prototype”
    Range.prototype = {
        // 如果x在范围内，则返回true,否则返回false
        // 这个方法可以比较数字范围，也可以比较字符串和日期范围
        includes: function(x) {return this.from <= x && x <= this.to;},
        // 对于范围内的每个整数都调用一次f
        // 这个方法只可用与数字范围
        foreach: function(f) {
            for(var x = Math.ceil(this.from); x <= this.to; x++) {f(x)};
        },
        // 返回表示这个范围的字符串
        toString: function() {return "(" + this.from + "...." + this.to + ")";},
        // 显示设置构造函数反向引用
        constructor: Range
    };

    // 这里是使用“范围对象的一些例子”

    var r = new Range(1,3);         // 创建一个范围对象
    r.includes(2); 
    r.foreach(console.log);
    console.log(r);             // => true: 2在这个范围内







</script>


<head>
    <title>放置文章标题</title>
</head>

<body>

</body>

</html>